The increasing demand for data communications has fostered the development of techniques that provide more cost-effective and efficient means of using communication networks to handle more information and new types of information. One such technique is to segment the information, which may be a voice or data communication, into packets. A packet is typically a group of binary digits, including both data and control information. Integrated packet networks (typically fast packet networks) are generally used to carry at least two (2) classes of traffic, which may include, for example, constant bit-rate (“CBR”), speech (“Packet Voice”), data (“Framed Data”), image, and so forth. A packet network comprises packet devices that source, sink and/or forward protocol packets. Each packet has a well-defined format and consists of one or more packet headers and some data. The header contains information that gives control and address information, such as the source and destination of the packet.
A single packet device may source, sink or forward protocol packets. The elements (software or hardware) that provide the packet processing within the packet operating system are known as function instances. Function instances are combined together to provide the appropriate stack instances to source, sink and forward the packets within the device. Routing of packets (or messages) to the proper function instance for processing is limited by the capacity of central processing units (“CPU”), hardware forwarding devices, or interconnect switching capacity within the packet device. Such processing constraints cause congestion and Quality of Service (“QoS”) problems inside the packet device.
The packet device may require the management of complex dynamic protocol stacks, which may be within any one layer in the protocol stack, or may be due to a large number of (potentially embedded) stack layers. In addition, the packet device may need instances of the stack to be created and torn down very frequently according to some control protocol. The packet device may also need to partition functionality into multiple virtual devices within the single physical unit to provide virtual private network (VPN) services. For example, the packet device may need to provide many hundreds of thousands of stack instances and/or many thousands of virtual devices.
The transfer and processing of packets across a packet network may require any of the associated devices to queue a variety of message traffic, either for packet routing or storage purposes. Different types of messages will have different processing and transport priorities. In order to efficiently allocate and utilize resources, the network must have a sustainable and predictable scheduling scheme, preferably one that comprehends and optimizes message prioritization. Depending upon the topology and functionality of the network, message prioritization may require a multi-dimensional classification scheme—where a message within a VPN can be prioritized in relation to other messages within that VPN and multiple VPNs can be prioritized in relation to each other—providing the ability to schedule message traffic according to multiple independent scales (e.g., priority or weighting classifications).
Accordingly, there is a need for versatile system for routing messages within a packet operating system that improves system performance and reliability, is easy to operate and maintain, and provides reliable, repeatable scheduling based on a desired multidimensional message classification scheme.